home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 January: Mac OS SDK / Dev.CD Jan 96 SDK / Dev.CD Jan 96 SDK1.toast / Development Kits (Disc 1) / AOCE / Development Tools / Sample Code / Messaging Service Access Module / Internet PMSAM / Internet PMSAM source / reports.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-09  |  2.9 KB  |  120 lines  |  [TEXT/MPS ]

  1. /*-------------------------------------------------------------------
  2.  
  3. AOCE Post Office Protocol (POP) / Simple Mail Transfer Protocol (SMTP)
  4. Mail Service Access Module
  5.  
  6. written by Steve Falkenburg-- MacDTS
  7. ©1991-1993 Apple Computer, Inc.
  8.  
  9. --------------
  10. change history
  11. --------------
  12.  
  13. SJF        02/19/93    update for beta build    b1
  14. SJF        10/29/92    update to a11            a11
  15. SJF        06/08/92    update to a8            a8
  16. SJF        02/15/92    first working version    a4.5
  17. SJF        10/16/91    initial coding            a3
  18.  
  19. ---------------------------------------------------------------------*/
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24.  
  25. #ifndef __OCE__
  26. #include <OCE.h>
  27. #endif
  28.  
  29. #ifndef __OCEMAIL__
  30. #include <OCEMail.h>
  31. #endif
  32.  
  33. #include "const.h"
  34. #include "gwerrors.h"
  35. #include "mytypes.h"
  36. #include "globals.h"
  37. #include "utils.h"
  38. #include "spoolsystem.h"
  39. #include "gatewaystuff.h"
  40.  
  41. #include "reports.h"
  42.  
  43. OSErr GenerateDeliveryReport(Boolean wasDelivered,FSSpec *spoolSpec)
  44. {
  45. #pragma unused (wasDelivered)
  46.     OSErr err;
  47.     unsigned long bufferLen;
  48.     short recipientIndex,spoolIndex;
  49.     MailIndications indications;
  50.     MailLetterID letterID;
  51.     OCEPackedRecipient packedSender;
  52.     OCERecipient sender;
  53.     RecordID entitySpecifier;
  54.     MSAMParam gwp;
  55.     MailMsgRef reportRef;
  56.     
  57.     TraceExecution("\pGenerateDeliveryReport");
  58.     
  59.     // get required information from spool to generate reports
  60.     
  61.     bufferLen = sizeof(MailIndications);
  62.     err = GetFromSpool(spoolSpec,kIndicationsType,kAttribCreator,0,(Ptr)&indications,&bufferLen,0);
  63.     if (err!=noErr) {
  64.         return err;
  65.     }
  66.     
  67.     bufferLen = sizeof(MailLetterID);
  68.     err = GetFromSpool(spoolSpec,kLetterIDType,kAttribCreator,0,(Ptr)&letterID,&bufferLen,0);
  69.     if (err!=noErr) {
  70.         return err;
  71.     }
  72.     
  73.     bufferLen = sizeof(OCEPackedRecipient);
  74.     err = GetFromSpool(spoolSpec,kFromType,kAddrCreator,0,(Ptr)&packedSender,&bufferLen,0);
  75.     if (err!=noErr) {
  76.         return err;
  77.     }
  78.     OCEUnpackDSSpec((PackedDSSpec*)&packedSender,&sender,&entitySpecifier);
  79.     
  80.     if ((indications.receiptReports) || (indications.nonReceiptReports)) {
  81.             
  82.         // make the report
  83.         
  84.         gwp.header.ioCompletion = (ProcPtr)MSAMCompletion;
  85.         gwp.msamCreateReport.msgID = letterID;
  86.         gwp.msamCreateReport.sender = &sender;
  87.         MSAMCreateReport(&gwp,true);
  88.         err = WaitPBDone(&gwp);
  89.         if (err!=noErr)
  90.             return err;
  91.         reportRef = gwp.msamCreateReport.mailMsgRef;
  92.         
  93.         // add the recipients to the report
  94.         
  95.         for (spoolIndex=0,err=noErr; err==noErr; spoolIndex++) {
  96.             bufferLen = sizeof(short);
  97.             err = GetFromSpool(spoolSpec,kRecipientType,kReportCreator,spoolIndex,(Ptr)&recipientIndex,&bufferLen,0);
  98.             if (err==noErr) {
  99.                 gwp.msamPutRecipientReport.mailMsgRef = reportRef;
  100.                 gwp.msamPutRecipientReport.recipientIndex = recipientIndex;
  101.                 gwp.msamPutRecipientReport.result = noErr;    // we're just always saying the message was sent just fine
  102.                 MSAMPutRecipientReport(&gwp,true);
  103.                 WaitPBDone(&gwp);
  104.             }
  105.         }
  106.         
  107.         // submit the report
  108.         
  109.         gwp.msamSubmit.mailMsgRef = reportRef;
  110.         gwp.msamSubmit.submitFlag = true;    // submit report
  111.         err = MSAMSubmit(&gwp);
  112.  
  113.     }
  114.     
  115.     return err;
  116. }
  117.  
  118.  
  119.  
  120.